package StructuralPattern.Adapter;

/**
 * @Classname : AdapterClient
 * @Description : 测试 适配器模式
 * 适配器模式
 * 一、模式定义
 *   Convert the interface of a class into another interface clients expect.
 *   Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.
 * （将一个类的接口变换成客户端所期待的另一种接口，从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。）
 *   优点：
 *     1、可以让两个不匹配的类一起运行，增加一个适配器即可
 *     2、灵活性高，不需要时直接删除适配器即可，不影响其他代码
 * 二、模式类图
 *   https://kdocs.cn/l/cdvaen3jrlv8
 * 三、适用场景
 *   1、用于解决正在服役项目的扩展问题，可以减少代码修改带来的风险，而非用于项目设计阶段
 *   2、当前服役接口不满足想要修改时，适配器模式可能是比较适合的设计模式
 *   3、类适配器通过继承关系实现，对象适配器通过关联关系实现，因此对象适配器更加灵活
 *
 * 四、应用举例
 *
 * @Author : chentianyu
 * @Date 2023/1/26 21:45
 */


public class AdapterClient {
    public static void main(String[] args) {
        System.out.println("测试 类适配器");
        Target classTarget = new ClassAdapter();
        classTarget.targetRequest();
        System.out.println("--------------------------------------------------------------------");

        System.out.println("测试 对象适配器");
        Target objectTarget = new ObjectAdapter(new Adaptee());
        objectTarget.targetRequest();
        System.out.println("--------------------------------------------------------------------");
    }
}

/** 20230126
 * 测试 类适配器
 * 扩展功能模块
 * --------------------------------------------------------------------
 * 测试 对象适配器
 * 扩展功能模块
 * --------------------------------------------------------------------
 */
